package 设计模式.创建型模式.单例模式.懒汉单例;

/**
 * 单例之懒汉模式
 *
 * @author MT
 * @date 2019-11-13 16:31
 */
public class LazySingleton {

    private String name = "LazySingleton";

    /**
     * 保证单例在线程中是同步的
     */
    private static volatile LazySingleton lazySingleton = null;

    /**
     * 防止实例化
     */
    private LazySingleton() {
        System.out.println("实例化");
    }

    /**
     * 返回对象
     *
     * @return
     */
    public static synchronized LazySingleton getInstance() {

        // 在getInstance方法前加同步
        if (lazySingleton == null) {
            lazySingleton = new LazySingleton();
        }

        return lazySingleton;
    }

    public String getName() {
        System.out.println(name);
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
